package com.bestcem.xm.award.service;

import com.bestcem.xm.award.controller.dto.draw.AwardRequestDayStatsDTO;

import java.util.Date;
import java.util.List;

/**
 * 奖励请求数量缓存辅助类
 *
 * @author sh.pei <sh.pei@idiaoyan.com>
 * @version v1.0
 * @date 2021/11/14 2:25
 */
public interface AwardCountRequestCacheService {

    /**
     * 初始化缓存
     *
     * @param awardId 奖励id
     * @param total   总数
     * @param pass    通过数
     */
    void initRequestCount(String awardId, int total, int pass);

    /**
     * 奖励删除时,删除缓存
     *
     * @param awardId
     */
    void delRequestCount(String awardId);

    /**
     * 增加请求数量
     *
     * @param awardId 奖励id
     * @param total   请求总数量
     * @param pass    通过数量
     */
    void addRequestCount(String awardId, int total, int pass);

    /**
     * 获取奖励的请求和通过数量总数
     *
     * @param awardId 奖励id
     * @return 请求和通过数量总数
     */
    long[] getRequestTotalAndPassCount(String awardId);

    /**
     * 获取开始日期到结束日期之间的每一天的请求和通过数量
     *
     * @param awardId  奖励id
     * @param startDay 开始日期 包含
     * @param day      天数
     * @return 开始日期 之后day天的请求和通过数量总数
     */
    List<AwardRequestDayStatsDTO> getRequestTotalAndPassDayCount(String awardId, Date startDay, int day);

    /**
     * 初始化之前创建的奖励的请求和通过数量，包含请求和通过总数，以及请求时刻的最近七天内的所有缓存数据，
     * @return
     */
    //ServiceResult<String> initAwardsRequestCount();
}
